package com.egg.auth.model.response.web;

import com.egg.common.core.model.response.BaseResponse;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * <p>
 * 授权客户端
 * </p>
 *
 * @author east
 * @since 2022-06-13
 */
@Data
@ApiModel(value = "客户端信息")
public class ClientInfo extends BaseResponse {


    @ApiModelProperty(value = "客户端ID")
    private Long id;

    @ApiModelProperty(value = "客户端名称")
    private String name;

    @ApiModelProperty(value = "客户端秘钥")
    private String secret;

    @ApiModelProperty(value = "应用签约的所有权限, 多个用逗号隔开")
    private String scope;

    @ApiModelProperty(value = "应用允许授权的所有URL, 多个用逗号隔开 （可以使用 * 号通配符）")
    private String allowUrl;

    @ApiModelProperty(value = "是否自动判断此 Client 开放的授权模式。 此值为 true 时：四种模式（isCode、isImplicit、isPassword、isClient）是否生效，依靠全局设置； 此值为 false 时：四种模式（isCode、isImplicit、isPassword、isClient）是否生效，依靠局部配置+全局配置")
    private Boolean isAutoMode;

    @ApiModelProperty(value = "自动授权")
    private Boolean autoApprove;

    @ApiModelProperty(value = "授权回调地址")
    private String redirectUrl;

    @ApiModelProperty(value = "单独配置此 Client 是否打开模式：授权码（Authorization Code）")
    private Boolean isCode;

    @ApiModelProperty(value = "单独配置此 Client 是否打开模式：隐藏式（Implicit）")
    private Boolean isImplicit;

    @ApiModelProperty(value = "单独配置此 Client 是否打开模式：密码式（Password）")
    private Boolean isPassword;

    @ApiModelProperty(value = "单独配置此 Client 是否打开模式：凭证式（Client Credentials）")
    private Boolean isClient;

    @ApiModelProperty(value = "单独配置此Client：是否在每次 Refresh-Token 刷新 Access-Token 时，产生一个新的 Refresh-Token [ 默认取全局配置 ]")
    private Boolean isNewRefresh;

    @ApiModelProperty(value = "Code授权码 保存的时间（单位：秒）默认五分钟")
    private Long codeTimeout;

    @ApiModelProperty(value = "单独配置此Client：Access-Token 保存的时间（单位：秒） [默认取全局配置] 默认两个小时")
    private Long accessTokenTimeout;

    @ApiModelProperty(value = "单独配置此Client：Refresh-Token 保存的时间（单位：秒） [默认取全局配置] 默认30 天")
    private Long refreshTokenTimeout;


}
